package com.icinfo.cloud.provider.punish.vo;

import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Collections;
import java.util.List;
import java.util.Objects;

/**
 * 直通车文书对象
 *
 * @author Junfeng.Chen
 * @date 2024/1/11 13:52
 **/
@Data
public class AppCaseDocumentVo {
    /**
     * 直通车文书id
     */
    private String documentId;
    /**
     * 当事人类型 1:个人 2:法人
     */
    private String partyType;
    /**
     * 当事人姓名 根据当事人类型 取当事人姓名 或 单位名称
     **/
    private String partName;
    /**
     * 文书名称
     */
    private String documentName;
    /**
     * 确认状态 YES or NO
     */
    private String documentStatus;

    /**
     * 关联任务信息
     */
    private List<AssociatedTaskVo> associatedInfo;
    /**
     * 文书创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime documentCreateTime;

    /**
     * 转换AppHisDocumentListVo 到 AppCaseDocumentVo
     *
     * @param listVo AppHisDocumentListVo对象
     * @return AppCaseDocumentVo对象
     */
    public static AppCaseDocumentVo convert(AppHisDocumentListVo listVo) {
        if (Objects.isNull(listVo)) {
            return null;
        }
        AppCaseDocumentVo vo = new AppCaseDocumentVo();
        vo.setDocumentId(listVo.getDocumentId());
        vo.setDocumentName(listVo.getDocumentName());
        vo.setDocumentStatus(listVo.getDocumentStatus());
        if (StrUtil.isNotEmpty(listVo.getAssociatedInfo())) {
            vo.setAssociatedInfo(JSON.parseArray(listVo.getAssociatedInfo(), AssociatedTaskVo.class));
        } else {
            vo.setAssociatedInfo(Collections.emptyList());
        }
        vo.setPartyType(listVo.getPartyType());
        vo.setPartName(listVo.getDocumentObject());
        if (StrUtil.isNotEmpty(listVo.getCreateTime())) {
            vo.setDocumentCreateTime(LocalDateTime.parse(listVo.getCreateTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
        }
        return vo;
    }
}
